"use strict";
cc._RF.push(module, '3e4d9D+Mq1BvoOps5mXaDd/', 'Game');
// scripts/Game.js

'use strict';

cc.Class({
    extends: cc.Component,

    properties: {
        //引用星星预制资源
        starPrefab: {
            default: null,
            type: cc.Prefab
        },

        //星星产生范围
        maxStarDuration: 0,
        minStarDuration: 0,

        //地面节点，用于确定星星生成的高度
        ground: {
            default: null,
            type: cc.Node
        },

        //主角节点，用于获取注解弹跳高度，和控制主角开关
        player: {
            default: null,
            type: cc.Node
        },
        // score label 的引用
        scoreDisplay: {
            default: 0,
            type: cc.Label
        }
    },

    onLoad: function onLoad() {
        // 获取地平面的 y 轴坐标
        this.groundY = this.ground.y + this.ground.height / 2;
        // 生成一个新的星星
        this.spawnNewStar();
        //初始化得分
        this.score = 0;
    },

    spawnNewStar: function spawnNewStar() {
        // 使用给定的模板在场景中生成一个新节点
        var newStar = cc.instantiate(this.starPrefab);
        // 将新增的节点添加到 Canvas 节点下面
        this.node.addChild(newStar);
        // 为星星设置一个随机位置
        newStar.setPosition(this.getNewStarPosition());
        // 在星星组件上暂存 Game 对象的引用
        newStar.getComponent('Star').game = this;
    },

    getNewStarPosition: function getNewStarPosition() {
        var randX = 0;
        // 根据地平面位置和主角跳跃高度，随机得到一个星星的 y 坐标
        var randY = this.groundY + Math.random() * this.player.getComponent('Player').jumpHeight + 50;
        // 根据屏幕宽度，随机得到一个星星 x 坐标
        var maxX = this.node.width / 2;
        randX = (Math.random() - 0.5) * 2 * maxX;
        // 返回星星坐标
        return cc.v2(randX, randY);
    },

    gainScore: function gainScore() {
        this.score += 1;
        //更新label
        console.log(this.score);
        this.scoreDisplay.string = 'Score: ' + this.score;
    }
});

cc._RF.pop();